package com.example.store.mapper;

import com.example.store.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

//用户模块持久层接口
@Mapper
public interface UserMapper {

    /**
     * 插入用户的数据
     * @param user 用户的数据
     * @return 受影响的行数（增删改都会返回影响行数）
     */
    Integer insert(User user);

    /**
     *根据用户名的数据查询用户
     * @param username 用户名
     * @return 找到对应的用户则返回用户，没有找到则返回null值
     */
    User findbyUsername(String username);

    /**
     * 根据用户名id修改密码
     * @param uid 用户uid
     * @param password 修改后的密码
     * @param modifiedUser 修改者
     * @param modifiedTime 修改时间
     * @return 影响行数
     */
    Integer updataPasswordByUid(Integer uid, String password, String modifiedUser, Date modifiedTime);

    /**
     * 根据用户uid查询用户是否存在
     * @param uid 用户uid
     * @return 用户数据
     */
    User fingByUid(Integer uid);

    /**
     * 更新用户数据
     * @param user 用户数据
     * @return 受影响的行数
     */
    Integer updateInfoByUid(User user);

    /**
     * 更新用户头像
     * @param uid 用户uid
     * @param avatar 用户头像路劲
     * @param modifiedUser 用户名
     * @param modifiedTime 修改时间
     * @return 影响行数
     */
    Integer updateAvatarByUid(
            @Param("uid") Integer uid,
            @Param("avatar") String avatar,
            @Param("modifiedUser") String modifiedUser,
            @Param("modifiedTime") Date modifiedTime);
}
